﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;
using System.Data;

namespace BCNPCObject.DB
{
    public class CMIS2
    {
        //private static string connection_string = "Server = Cmis2; user = cmis01; password = cmis01evnit";
        private static string connection_string = "";
        private static string strPath = @"C:\NPCUSConfig\Servers.xml";
        private static OracleConnection oraConnection;

        public static OracleConnection g_conn
        {
            get
            {
                try
                {
                    if (oraConnection == null)
                    {
                        if (connection_string == "")
                        {
                            DataSet ds = new DataSet();
                            ds.ReadXml(strPath);
                            if (ds == null)
                            {
                                CMISLibrary.Utility.ShowMsg("Không tồn tại file cấu hình", "Thông báo");
                                connection_string = "";
                            }
                            else
                                if (ds.Tables.Contains("ORACLE_SERVER") == false)
                                {
                                    CMISLibrary.Utility.ShowMsg("File cấu hình không đúng định dạng", "Thông báo");
                                    connection_string = "";
                                }
                                else
                                    if (ds.Tables["ORACLE_SERVER"].Rows.Count == 0)
                                    {
                                        CMISLibrary.Utility.ShowMsg("Không tồn tại dữ liệu cấu hình", "Thông báo");
                                        connection_string = "";
                                    }
                                    else
                                    {
                                        connection_string = Convert.ToString(ds.Tables["ORACLE_SERVER"].Rows[0]["CONNECTSTRING"]);
                                    }
                            if (connection_string == "")
                            {
                                oraConnection = null;
                            }
                            else
                            {
                                oraConnection = new OracleConnection(connection_string);
                            }
                            return oraConnection;
                        }
                        else
                        {
                            oraConnection = new OracleConnection(connection_string);
                            return oraConnection;
                        }
                    }
                    else
                    {
                        return oraConnection;
                    }
                }
                catch (Exception ex)
                {
                    CMISLibrary.Utility.ShowMsg("Lỗi khởi tạo chuỗi kết nối đến CSDL: " + ex.Message, "Thông báo");
                    oraConnection = null;
                    return oraConnection;
                }

            }
        }
        private static CMIS database;
        public static CMIS DB
        {
            get
            {
                if (database == null) database = new CMIS(g_conn);
                return database;
            }
        }
        /// <summary>
        /// Dùng trong khối lệnh catch để hủy bỏ hoàn toàn lỗi trong câu lệnh trước
        /// </summary>
        public static void ResetDB()
        {
            database = new CMIS(g_conn);
        }
    }
}
